As the number of communication networks, types of client devices, and multimedia content formats increase, interoperability between different systems and networks is becoming of greater importance. For video applications, when pre-encoded video content needs to be distributed to users with different connections, the implementation is often difficult because the target transmission channel conditions are generally unknown when the video is originally encoded. Besides the problem of channel characteristics and capacities, different end devices used in modern communication also introduce certain problems. For example, most current handheld devices have only limited computing and display capabilities, which are typically not suitable for decoding and displaying high quality video. In this case, pre-coded high quality video content may need to be converted to a lower resolution format for displaying on handheld devices. Moreover, as the number of different video compression standards (e.g., H.261, H.263, H.264, MPEG-1, MPEG-2, MPEG-4) increases, there is a growing need for conversion between video content coded by different standards. Thus, devices such as gateways and servers must be developed to provide a seamless interaction between content creation and consumption. Transcoding of multimedia content is one known technique to facilitate such interaction.
Transcoding can be broadly defined as the conversion of one coded signal to another coded signal. In the specific context of video signals, video transcoding typically comprises the necessary operations for converting a compressed video stream from one format to another format for transmission over heterogeneous networks to various types of end devices. Video transcoding is typically performed in a video processor. High density processing of multiple video channels, for example, as in a video gateway or a video server, typically requires multiple instances of video processors (e.g., digital signal processors (DSPs)) and a shared network interface. The shared network interface is often managed by a network processor.
One disadvantage associated with video processing in general, however, is that video processors, particularly in a video gateway servicing multiple video channels, generally require a substantially large local memory for storing data generated by and/or used in conjunction with the video decoding operation, which can be costly. If video transcoding is performed, memory requirements can increase even further. Although memory pooling can be used with the local memory to reduce this memory overhead, it is significantly more difficult, and thus undesirable, to reconfigure system resources either during runtime or during setup.
Accordingly, there exists a need for improved video processing techniques which do not suffer from one or more of the problems exhibited by conventional video processing methodologies.